<?php

/**
 * Модель модуля Новостей
 */
class NewsModel extends DbModel {

    protected $_name = 'page_news';
    public $res;

    /**
     * Получение новости/новостей
     *
     * @param int $sid #ID секции
     * @param int $nid #ID новости
     * @param int $count Кол-во новостей
     * @return mixed
     */
    public function getNews($sid = 0, $nid = 0, $count = 0) {
        $select = $this->select();
        $select->where('sid = ?', $sid);
        if ($nid > 0) {
            $select->where('id = ?', $nid);
            $res = $this->fetchRow($select);
            return $res;
        } else {
            $select->order('date DESC');
            if ($count > 0) {
                $select->limit($count);
            }
            $res = $this->fetchAll($select);
            return $res;
        }
    }

    /**
     * Обновление/добавление новости
     *
     * @param array $data Данные новости
     * @param int $sid #ID секции
     * @param int $nid #ID новости
     * @return int #ID новости
     */
    public function updateNews($data, $sid, $nid = 0) {
        if ($nid > 0) {
            $this->update($data, "id = " . $nid);
        } else {
            $this->insert($data + array('sid' => $sid));
            $nid = $this->_db->lastInsertId();
        }
        return $nid;
    }

    /**
     * Удаление ленты новостей для секции
     *
     * @param int $sid #ID секции
     */
    public function deleteContent($sid) {
        $id = (int) $sid;
        if ($id > 0) {
            $this->delete("sid = " . $id);
        }
    }

    /**
     * Удаление новости по ID
     *
     * @param int $nid #ID новости
     */
    public function deleteNews($nid) {
        $id = (int) $nid;
        if ($id > 0) {
            $this->delete("id = " . $id);
        }
    }

    /**
     * Удаление секции
     *
     * @param int $sid #ID секции
     */
    public function deleteSection($sid) {
        $this->deleteContent($sid);
    }

    /**
     * Постраничное возвращение новостей
     *
     * @param int $pageNumber Номер страницы
     * @param int $sid #ID секции
     * @return mixed
     */
    public function getPaginatorRows($pageNumber = 1, $sid = 0) {
        $select = $this->select()->order('date DESC');
        if ($sid > 0) {
            $select->where('sid = ?', $sid);
        }
        $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbSelect($select));
        $paginator->setCurrentPageNumber($pageNumber);
        $model = new PaginatorModel();
        return $model->get($paginator);
    }

}